// 1. 导入express
const express = require('express');
// 2. 创建app对象
const app = express();
// 3. 配置get路由 - 同源页面渲染
app.get('/sameOrigin', (req, res) => {
    res.sendFile(__dirname+'/01-同源.html');
});

app.get('/',(req,res)=>{
    res.sendFile(__dirname+'/03-GET请求参数.html');
});

// 4. 设置跨域中间件
app.use(function(request, response, next){
//     // access 访问进入  control 控制  allow 允许  origin 源
    response.setHeader('Access-Control-Allow-Origin', "*");  //任何页面发送请求都允许跨域请求
    //  response.setHeader('Access-Control-Allow-Origin', "http://127.0.0.1:5500");  //指定发送请求允许跨域请求
    response.setHeader('Access-Control-Allow-Headers', "*"); //该响应头 允许客户端可以设置『自定义』请求头
//     // response.setHeader('Access-Control-Allow-Methods', "*"); //允许各种请求方式进行跨域请求 PUT  PATCH
    response.setHeader('Access-Control-Expose-Headers', "*"); //暴露响应头信息
    next();
});

// 5. 使用解析请求体数据中间件
app.use(express.urlencoded({extended:false}));

// 6. 配置一个get类型请求路由
// app.get('/getServer/:name', (req, res) => {
app.get('/getServer', (req, res) => {
    // 获取前端发来的get请求查询字符串参数
     console.log('get请求打印',req.query); // {name:'laowang'}

    // 获取parmas参数
    // console.log(req.params); //{ name: 'laoli' }

    // res.send('GET DATA111');
    res.json({
        msg:"GET DATA",
        code:200
    })
});

// 7. 配置一个post类型请求路由
app.post('/postServer', (req, res) => {

    console.log('post请求打印',req.body); //{ name: 'laowang', age: '18' }

    res.json({
        msg:"老弟你辛苦了",
        code:200
    });
});

//8. 配置一个返回json格式数据的路由
app.all('/jsonServer', (req, res) => {
    res.json({
        msg: '此用户名已经存在',
        code: '0011'
    });
})

//9. 配置一个延时响应请求
app.all('/delayServer', (req, res) => {
    setTimeout(() => {
        res.send('这是一个延时响应');
    }, 3000);
});

// 10. 配置一个lol英雄列表路由
const data = require('./11-LOL练习/data/lol.json');
app.get('/getHeros',(req,res)=>{
    res.json(data)
})

//11. 配置一个jsonp响应
app.all('/jsonpServer', (req, res) => {
    let {cb} = req.query; //?cb = aaa //http://localhost/jsonpServer?cb=abc
    let data = {
        msg: 'laowang',
        code:200
    }
    let json = JSON.stringify(data);
    res.send(`${cb}(${json})`); //aaa({msg:"laowang",code:200})
});

//jsonp接口2
app.get('/jsonpDemo',(req,res)=>{
    // console.log(req.query); //{ cb: 'aaa' }

    let {cb} = req.query; //fn2
     
    // let data = '666';
    let obj = {
        name:"laowang",
        age:18
    }

    let str = JSON.stringify(obj);
    // `{"name":"laowang","age":18}`
    
    // fn2(`{"name":"laowang","age":18}`)
    // fn2({"name":"laowang","age":18})
    res.send(`${cb}(${str})`);
});

app.listen(80, () => {
    console.log('80服务已经启动....');
})
